Some programs assume they can use 17 tag bits in a 64-bit pointer,
which works on most other 64-bit architectures but not on arm64 with
CONFIG_ARM64_VA_BITS_48. To maintain compatibility with these
programs, limit TASK_SIZE_64 to a maximum of 1 << 47.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Topic bugfix/arm64
Gbp-Pq: Name arm64-mm-limit-task_size_64-for-compatibility.patch
#define PCI_IO_END (VMEMMAP_START - SZ_2M)
#define PCI_IO_START (PCI_IO_END - PCI_IO_SIZE)
#define FIXADDR_TOP (PCI_IO_START - SZ_2M)
+#if VA_BITS <= 47
#define TASK_SIZE_64 (UL(1) << VA_BITS)
+#else
+/* User-space might use up to 17 tag bits in 64-bit pointers */
+#define TASK_SIZE_64 (UL(1) << 47)
+#endif
#ifdef CONFIG_COMPAT
#define TASK_SIZE_32 UL(0x100000000)